"""
系统配置管理模块
功能：管理系统运行参数和配置信息
参数：包含服务器配置、模型配置等
使用场景：整个系统的配置中心，便于统一管理参数
"""

import os
from typing import List

class Settings:
    """
    系统设置类
    用途：统一管理系统配置参数
    """
    
    # 服务器配置
    HOST: str = "127.0.0.1"
    PORT: int = 8000
    DEBUG: bool = True
    
    # 端口管理配置
    AUTO_PORT_SWITCH: bool = False  # 禁用自动端口切换功能
    
    # 音频处理配置
    SAMPLE_RATE: int = 22050  # 音频采样率
    AUDIO_DURATION: float = 3.0  # 音频截取时长（秒）
    
    # 特征提取配置
    MFCC_COMPONENTS: int = 13  # MFCC特征维度
    HOP_LENGTH: int = 512  # 帧移长度
    
    # 模型配置
    MODEL_PATH: str = "models/emotion_classifier.joblib"
    SCALER_PATH: str = "models/feature_scaler.joblib"
    
    # 支持的情感类别 - RAVDESS完整情感集
    EMOTION_LABELS: List[str] = [
        "neutral",    # 中性
        "calm",       # 平静
        "happy",      # 高兴
        "sad",        # 悲伤
        "angry",      # 愤怒
        "fearful",    # 恐惧
        "disgust",    # 厌恶
        "surprised"   # 惊讶
    ]
    
    # 文件上传配置
    MAX_FILE_SIZE: int = 50 * 1024 * 1024  # 50MB (增加限制以支持更长音频)
    ALLOWED_EXTENSIONS: List[str] = [
        ".wav",       # 无损音频格式
        ".mp3",       # 常用压缩格式
        ".flac",      # 无损压缩格式
        ".m4a",       # AAC格式
        ".aac",       # 高级音频编码
        ".ogg",       # Ogg Vorbis格式
        ".wma",       # Windows Media Audio
        ".aiff",      # Audio Interchange File Format
        ".au",        # Sun Audio格式
        ".3gp",       # 移动设备音频
        ".amr"        # 自适应多速率编码
    ]

# 创建全局配置实例
settings = Settings() 